/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ifpb.pibict.siscoord.entity;

import ifpb.pibict.siscoord.enumerations.TipoUsuario;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;

/**
 *
 * @author Diogenes
 */

@Entity
public class Usuario implements Serializable {
    
    private Integer Id;
    private String nome;
    private String telefone;
    private String email;
    private TipoUsuario tipo;
    private List<Emprestimo> emprestimos;

    public Usuario() {
    }

    public Usuario( String nome, String telefone, String email, TipoUsuario tipo) {
        this.nome = nome;
        this.telefone = telefone;
        this.email = email;
        this.tipo = tipo;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getTelefone() {
        return telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Enumerated
    public TipoUsuario getTipo() {
        return tipo;
    }

    public void setTipo(TipoUsuario tipo) {
        this.tipo = tipo;
    }

    @Id
    @GeneratedValue
    public Integer getId() {
        return Id;
    }

    public void setId(Integer Id) {
        this.Id = Id;
    }

    @OneToMany(mappedBy = "usuario", cascade = {CascadeType.ALL})
    public List<Emprestimo> getEmprestimos() {
        return emprestimos;
    }

    public void setEmprestimos(List<Emprestimo> emprestimos) {
        this.emprestimos = emprestimos;
    }

    private void init() {
        this.emprestimos = new ArrayList<Emprestimo>();
    }

    public Boolean addEmprestimo(Emprestimo emprestimo) {
        if (!this.emprestimos.contains(emprestimo)) {
            return emprestimos.add(emprestimo);
        }
        return Boolean.FALSE;
    }

    public Boolean removeEmprestimo(Emprestimo emprestimo) {
        if (this.emprestimos.contains(emprestimo)) {
            return this.emprestimos.remove(emprestimo);
        }
        return Boolean.FALSE;
    }

}
